package com.dys.codeblock;

/**
 * @className: com.dys.codeblock.CodeBlockTest
 * @description: com.dys.codeblock
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/15 下午10:12
 */
public class CodeBlockTest {
    int a;
    static int sa;

    public void a() {
        System.out.println("a方法");
        {
            // 普通块限制了局部变量的作用范围
            System.out.println("普通代码块");
            // 限定一个作用域范围
            int num = 10;
            System.out.println(num);
            System.out.println("========普通块结束==============");
        }
        // System.out.println(num);
        // if(){}
        // while(true){}
    }

    static public void b() {
        System.out.println("b方法");
        System.out.println("========静态方法结束==========");
    }

    // 构造块
    {
        System.out.println("构造块,解决在方法外写代码的问题");
        System.out.println("========构造块结束=========");
    }

    // 在类加载时,就加载了
    static {
        // 创建工厂,加载数据库的信息
        System.out.println("这是静态块");
        // 在静态块中只能访问：静态属性和静态方法
        System.out.println(sa);
        b();
        System.out.println("--------静态块结束==========");
    }

    public CodeBlockTest() {
        System.out.println("这是空构造器");
    }

    public CodeBlockTest(int a) {
        this.a = a;
    }

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        CodeBlockTest t = new CodeBlockTest();
        t.a();
        CodeBlockTest t2 = new CodeBlockTest();
        t2.a();
    }
}
